package cn.tedu.math;

import java.math.BigDecimal;
import java.math.BigInteger;

public class Demo {
    public static void main(String[] args) {
        //浮点型精度损失
//        System.out.println(0.01+0.05);//0.060000000000000005
//        System.out.println(0.01+0.02);//0.03
//        System.out.println((1+5)/100.0);//0.06

        //精确运算的方法
        //byte short int long
//        System.out.println(Long.MAX_VALUE);
//        long num = 9223372036854775807L;
//        long num1 = 9223372036854775808888888888L;
        //常量
//        System.out.println(BigInteger.TEN);//10

        //创建BigInteger对象
//        BigInteger integer = new BigInteger("9223372036854775808888888888");
//        System.out.println(integer);//重写toString
//        BigInteger integer1 = new BigInteger("5");
//        System.out.println(integer1);
////        System.out.println(integer+integer1);//编译会报错
//        System.out.println(integer.add(integer1));

//        long num = 89898989890L;
//        //long -> BigInteger
//        BigInteger integer = BigInteger.valueOf(num);

        //BigDecimal
//        BigDecimal decimal1 = new BigDecimal(0.01);
//        BigDecimal decimal2 = new BigDecimal(0.05);
//        System.out.println(decimal1+decimal2);//编译会报错
//        System.out.println(decimal1.add(decimal2));//不精确的结果
        //参数为字符串类型
        BigDecimal decimal1 = new BigDecimal("0.01");
        BigDecimal decimal2 = new BigDecimal("0.05");
        System.out.println(decimal1.add(decimal2));//0.06精确结果
    }
}
